package openfl.display {
	
	
	/**
	* @externs
	* A class that provides constant values for visual blend mode effects. These
	* constants are used in the following:
	* 
	*  *  The `blendMode` property of the
	* openfl.display.DisplayObject class.
	*  *  The `blendMode` parameter of the `draw()`
	* method of the openfl.display.BitmapData class
	* 
	*/
	final public class BlendMode {
		
		/**
		* Adds the values of the constituent colors of the display object to the
		* colors of its background, applying a ceiling of 0xFF. This setting is
		* commonly used for animating a lightening dissolve between two objects.
		*
		* For example, if the display object has a pixel with an RGB value of
		* 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the
		* resulting RGB value for the displayed pixel is 0xFFC833(because 0xAA +
		* 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).
		*/
		public static const ADD:String = "add";
		
		/**
		* Applies the alpha value of each pixel of the display object to the
		* background. This requires the `blendMode` property of the
		* parent display object be set to
		* `openfl.display.BlendMode.LAYER`.
		*
		* Not supported under GPU rendering.
		*/
		public static const ALPHA:String = "alpha";
		
		/**
		* Selects the darker of the constituent colors of the display object and the
		* colors of the background(the colors with the smaller values). This
		* setting is commonly used for superimposing type.
		*
		* For example, if the display object has a pixel with an RGB value of
		* 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the
		* resulting RGB value for the displayed pixel is 0xDDCC00(because 0xFF >
		* 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).
		*
		* Not supported under GPU rendering.
		*/
		public static const DARKEN:String = "darken";
		
		/**
		* Compares the constituent colors of the display object with the colors of
		* its background, and subtracts the darker of the values of the two
		* constituent colors from the lighter value. This setting is commonly used
		* for more vibrant colors.
		*
		* For example, if the display object has a pixel with an RGB value of
		* 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the
		* resulting RGB value for the displayed pixel is 0x222C33(because 0xFF -
		* 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33).
		*/
		public static const DIFFERENCE:String = "difference";
		
		/**
		* Erases the background based on the alpha value of the display object. This
		* process requires that the `blendMode` property of the parent
		* display object be set to `openfl.display.BlendMode.LAYER`.
		*
		* Not supported under GPU rendering.
		*/
		public static const ERASE:String = "erase";
		
		/**
		* Adjusts the color of each pixel based on the darkness of the display
		* object. If the display object is lighter than 50% gray, the display object
		* and background colors are screened, which results in a lighter color. If
		* the display object is darker than 50% gray, the colors are multiplied,
		* which results in a darker color. This setting is commonly used for shading
		* effects.
		*
		* Not supported under GPU rendering.
		*/
		public static const HARDLIGHT:String = "hardlight";
		
		/**
		* Inverts the background.
		*/
		public static const INVERT:String = "invert";
		
		/**
		* Forces the creation of a transparency group for the display object. This
		* means that the display object is precomposed in a temporary buffer before
		* it is processed further. The precomposition is done automatically if the
		* display object is precached by means of bitmap caching or if the display
		* object is a display object container that has at least one child object
		* with a `blendMode` setting other than `"normal"`.
		*
		* Not supported under GPU rendering.
		*/
		public static const LAYER:String = "layer";
		
		/**
		* Selects the lighter of the constituent colors of the display object and
		* the colors of the background(the colors with the larger values). This
		* setting is commonly used for superimposing type.
		*
		* For example, if the display object has a pixel with an RGB value of
		* 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the
		* resulting RGB value for the displayed pixel is 0xFFF833(because 0xFF >
		* 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).
		*
		* Not supported under GPU rendering.
		*/
		public static const LIGHTEN:String = "lighten";
		
		/**
		* Multiplies the values of the display object constituent colors by the
		* constituent colors of the background color, and normalizes by dividing by
		* 0xFF, resulting in darker colors. This setting is commonly used for
		* shadows and depth effects.
		*
		* For example, if a constituent color(such as red) of one pixel in the
		* display object and the corresponding color of the pixel in the background
		* both have the value 0x88, the multiplied result is 0x4840. Dividing by
		* 0xFF yields a value of 0x48 for that constituent color, which is a darker
		* shade than the color of the display object or the color of the
		* background.
		*/
		public static const MULTIPLY:String = "multiply";
		
		/**
		* The display object appears in front of the background. Pixel values of the
		* display object override the pixel values of the background. Where the
		* display object is transparent, the background is visible.
		*/
		public static const NORMAL:String = "normal";
		
		/**
		* Adjusts the color of each pixel based on the darkness of the background.
		* If the background is lighter than 50% gray, the display object and
		* background colors are screened, which results in a lighter color. If the
		* background is darker than 50% gray, the colors are multiplied, which
		* results in a darker color. This setting is commonly used for shading
		* effects.
		*
		* Not supported under GPU rendering.
		*/
		public static const OVERLAY:String = "overlay";
		
		/**
		* Multiplies the complement(inverse) of the display object color by the
		* complement of the background color, resulting in a bleaching effect. This
		* setting is commonly used for highlights or to remove black areas of the
		* display object.
		*/
		public static const SCREEN:String = "screen";
		
		public static const SHADER:String = "shader";
		
		/**
		* Subtracts the values of the constituent colors in the display object from
		* the values of the background color, applying a floor of 0. This setting is
		* commonly used for animating a darkening dissolve between two objects.
		*
		* For example, if the display object has a pixel with an RGB value of
		* 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the
		* resulting RGB value for the displayed pixel is 0x338400(because 0xDD -
		* 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00).
		*/
		public static const SUBTRACT:String = "subtract";
		
	}
	
	
}